// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: Red White Block Object
// Script Author: Christian Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------

//-------Aliases-------//
private alias 8 : TYPE_REDWHITEBLOCK

// Function declarations
reserve function RedWhiteBlock_DebugDraw
reserve function RedWhiteBlock_DebugSpawn

// Static Values

// Tables

function RedWhiteBlock_DebugDraw
	DrawSprite(0)
end function


function RedWhiteBlock_DebugSpawn
	temp5 = 8
	CallFunction(DebugMode_SpawnObject)
	object[arrayPos0].drawOrder = 4
	object[arrayPos0].groupID = GROUP_BLOCKS
end function


event ObjectMain
	foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
		if object.propertyValue == 0
			CallFunction(SpecialSetup_Function10)
		else
			switch object.propertyValue
			case 1
				BoxCollisionTest(C_TOUCH, object.entityPos, -160, 40, 160, 66, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
				if checkResult == 1
					object.propertyValue = 0
					object.inkEffect = INK_NONE
				end if
				break
			case 2
				BoxCollisionTest(C_TOUCH, object.entityPos, 40, -160, 66, 160, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
				if checkResult == 1
					object.propertyValue = 0
					object.inkEffect = INK_NONE
				end if
				break
			case 3
				BoxCollisionTest(C_TOUCH, object.entityPos, -66, -160, -40, 160, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
				if checkResult == 1
					object.propertyValue = 0
					object.inkEffect = INK_NONE
				end if
				break
			case 4
				BoxCollisionTest(C_TOUCH, object.entityPos, -160, -66, 160, -40, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
				if checkResult == 1
					object.propertyValue = 0
					object.inkEffect = INK_NONE
				end if
				break
			case 5
				BoxCollisionTest(C_TOUCH, object.entityPos, 40, -24, 66, 24, currentPlayer, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO, HITBOX_AUTO)
				if checkResult == 1
					object.propertyValue = 0
					object.inkEffect = INK_NONE
				end if
				break
			end switch
		end if
	next
end event


event ObjectDraw
	CallFunction(SpecialSetup_Function9)
	temp2 = oscillation
	temp2 &= 15
	temp2 >>= 3
	DrawSpriteFX(temp2, FX_INK, temp0, temp1)
end event


event ObjectStartup
	LoadSpriteSheet("Special/Objects.gif")
	SpriteFrame(-12, -12, 24, 24, 276, 76)
	SpriteFrame(-12, -12, 24, 24, 276, 176)
	foreach (TypeName[Red White Block], arrayPos0, ALL_ENTITIES)
		object[arrayPos0].groupID = GROUP_BLOCKS
		if object[arrayPos0].propertyValue > 0
			object[arrayPos0].inkEffect = INK_BLEND
			object[arrayPos0].alpha = 128
		end if
	next
	SetTableValue(TypeName[Red White Block], DebugMode_ObjCount, DebugMode_TypeTable)
	SetTableValue(RedWhiteBlock_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
	SetTableValue(RedWhiteBlock_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
	DebugMode_ObjCount++
end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Special/Objects.gif")
	SpriteFrame(-12, -12, 24, 24, 276, 76)
	SpriteFrame(-12, -12, 24, 24, 276, 176)
end event
